/*
 * archivos_abiertos.h
 *
 *  Created on: 20/10/2011
 *      Author: utn_so
 */

#ifndef ARCHIVOS_ABIERTOS_H_
#define ARCHIVOS_ABIERTOS_H_


#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <stdlib.h>
#include <pthread.h>




/* Manejo de Listas para Archivos Abiertos */



struct nodoListaArchivosAbiertos *archivosAbiertos;
pthread_mutex_t mutexArchivosAbiertos;

/*	archivosAbiertos es una lista en la que se guardan
 * los archivos que actualmente se encuentran abiertos.
 * Cada nodo de la lista tiene un puntero a la cache
 * del archivo
 */

/* Funciones con Listas */
uint32_t InsertarArchivoAbierto (struct nodoListaArchivosAbiertos **lista, char *path, uint32_t iClus);
uint32_t BorrarArchivoAbierto(struct nodoListaArchivosAbiertos **lista, char *path);
uint32_t ListaArchivosAbiertosVacia(struct nodoListaArchivosAbiertos *lista);
void BorrarListaArchivosAbiertos(struct nodoListaArchivosAbiertos *lista); // Borrar Archivos Abiertos
void MostrarArchivosAbiertos(struct nodoListaArchivosAbiertos *lista);
uint32_t estaAbierto(const char *path);
uint32_t cantidadDeVecesAbierto(const char *path);
struct colaDeCache * buscarCacheDeUnArchivo(const char *path);

#endif /* ARCHIVOS_ABIERTOS_H_ */
